package br.com.qualityempresa.core

class MensagemSistemaTagLib {

	static namespace = "mensagem"

	def renderizar = {
		attrs, body ->
		if (!attrs.mensagem) {
			return
		}
		
		def msg = attrs.mensagem
		def msgValue
		if (msg.message) {
			out << """<div class="alert alert-info">"""
			msgValue = msg.message
			mostrarDetalhe(msgValue)
			out << """</div>"""
		}
		if (msg.success) {
			out << """<div class="alert alert-success">"""
			out << """   <i class="icon-ok"></i> """
			msgValue = msg.success
			mostrarDetalhe(msgValue)
			out << """</div>"""
		}
		if (msg.warning) {
			out << """<div class="alert alert-block">"""
			out << """   <i class="icon-warning-sign"></i>"""
			msgValue = msg.warning
			mostrarDetalhe(msgValue)
			out << """</div>"""
		}
		if (msg.error) {
			out << """<div class="alert alert-error">"""
			out << """   <i class="icon-remove"></i>"""
			msgValue = msg.error
			mostrarDetalhe(msgValue)
			out << """</div>"""
		}
	}
	
	private mostrarDetalhe(msgValue) {
		if (msgValue instanceof String) {
			out << """   <strong>""" + msgValue + """</strong>"""
		} else if (msgValue?.message) {
			out << """   <strong>""" + msgValue.message + """</strong>"""
			if (msgValue.detail) {
				def erros = ""
				msgValue.detail.errors?.allErrors?.each{
					def item = message(error: it)
					if (item && item.length() > 0) {
						erros = erros + "<li>" + item + "</li>"
					}
				};
				out << erros
			}
		}

	}
}
